
#ifndef IRIDE_VECTOR3_H_
#define IRIDE_VECTOR3_H_

#include "Types.h"
#include "stddef.h"

namespace Iride
{
	class Vector3
	{

	public:

		Real x;
		Real y;
		Real z;

		Vector3();
		Vector3(Real fx, Real fy, Real rz);

		void Swap(Vector3 &rOther);

		Real 	operator[] (const size_t i) const;
		Real& 	operator[] (const size_t i);

		Vector3 operator - ( void ) const;

		Vector3 operator + (const Vector3&) const;
		Vector3 operator - (const Vector3&) const;
		Vector3 operator * (const Real&) const;
		Vector3 operator / (const Real&) const;

		Vector3& operator+= (const Vector3&);
		Vector3& operator-= (const Vector3&);

		Real Dot (const Vector3&) const;
		Vector3 Cross (const Vector3&) const;

		bool Normalize(void);

		Real Length() const;

		static Vector3 Lerp(Vector3, Vector3, Real);

		static const Vector3 Zero;


	};
};

#endif


